/**
 * @description seed-form-item 自定义项
 * 自定义项可以直接根据后台接口返回的自定义字段 matchSignupFields 循环出来 输入框或者 选择框
 * 在对应的 ts 里 建立 formGroup 添加对应的控制器 control
 * 在html的form表单里需要加上 ngDefaultControl 才能被识别为 form 的 control
 * @author ouxh862
 * @Input() title: string; 输入框名称
 * @Input() type: string; 输入框类型
 * @Input() selectValue: string; 如果 MatchSignupFieldsResp 的type 字段值为2 时, boxValue 字段会是一个非空数组，即选择框的选项
 * @Input() defaultValue: string; 默认值
 *
 * 如果需要错误提示，可以在标签里面添加
 * example: （可参考seed-form-base）
 * html:
 * <seed-form-item  [type]="item.fieldType"
     (valueChange)="itemChagne($event,item.fieldText)"
     [defaultValue]="setCustomerDefault(item.fieldText)"
     [title]="item.fieldText" [selectValue]="item.boxValue"
     *ngFor="let item of addition; let last = last;"
     formControlName="{{item.fieldText}}"
     ngDefaultControl>
 </seed-form-item>
 */


import {Component, OnInit, ViewEncapsulation, Input, Output, EventEmitter} from '@angular/core';

@Component({
  selector: 'seed-form-item',
  templateUrl: './form-item.component.html',
  styleUrls: ['./form-item.component.scss'],
  encapsulation: ViewEncapsulation.None
})
export class FormItemComponent implements OnInit {
  public valueHasChange = false;
  public inputBlur = false;
  public _defaultValue: string | number;
  @Input() type: number;
  @Input() title: string;
  @Input() selectValue: string | Array<any>;

  @Input()
  set defaultValue(val) {
    this._defaultValue = val;
  };

  get defaultValue() {
    return this._defaultValue;
  };

  @Output() valueChange: EventEmitter<any> = new EventEmitter();

  constructor() {
  }

  ngOnInit() {
  }

  onblur() {
    this.inputBlur = true;
  }

  change($event) {
    this.valueHasChange = true;
    this.valueChange.emit($event);
  }
}
